#ifndef EFFECTS_H
#define	EFFECTS_H

#include <deque>

#include "Effect.h"

using namespace std;

class Effects : public Effect {
public:
    Effects();
    virtual ~Effects();

    void clear();
    void push(Effect *effect);
    Effect* pop();
    Effect* top();
    const Effect* top() const;
    bool empty() const;
    bool any() const;
    long unsigned int size() const;

    virtual IplImage* apply(const IplImage* in);

private:
    deque<Effect*> effects;
};

#endif	/* EFFECTS_H */

